home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-01-04 | 82.0 KB | 2,053 lines |
- RAMDACs
-
- AcuMos:
- ADAC1 15/16/24 bit.
-
- Analog Devices:
- ADV471 6bit DAC 15 overlay registers
- ADV475 6bit DAC 15 overlay registers
- ADV476 6bit DAC
- ADV477 8bit DAC 15 overlay registers
- ADV478 6/8bit DAC 15 overlay registers
-
- ADV7129 True-Color 192bit pixel bus
- ADV7160 True color 96bit pixel bus. 10bit DACs. HW cursor. PLL
- ADV7162
-
- ATI:
- ATI68830 15/16/24bit Up to 80 MHz !
- ATI68860 15/16/24bit "Spectra" DAC for Mach64
- ATI68875 15/16/24bit Up to 135 MHz ! Used in ATI Graphics Ultra +
- and Pro. Similar to TI34075
- ATI68880 Very similar to 68860
-
- AT&T:
- ATT20c40x ??
- ATT20c490 15/16/24 bit. 6/8 bit DAC.
- ATT20c491 15/16/24 bit. 6/8 bit DAC w/gamma correction
- ATT20c492 15/16/18 bit 6bit DACs. w/gamma correction
- ATT20c493 15/16/18 bit 6bit DACs
- ATT20c497 24bit ?
- ATT20c498 24bit 16bit pixel databus !
- ATT21c498 24bit 16bit pixel databus ! What's the diff?
- ATT22c498 24bit 16bit pixel databus !
-
-
- Avance Logic:
- ALG1101 16-bit. Appears to be different from the other HiColor
- DACs.
- ALG1201 24bit
- ALG1301 24bit
-
- Avasem:
- AV3676 6bit DAC
-
- Brooktree:
- Bt458 8bit DAC upto 135MHz. Not VGA compatible
- Bt476 6bit DAC.
- Bt477 6/8bit DAC
- Bt478 6/8bit DAC.
- Bt481 15/16bit
- Bt482 15/16bit
- Bt484 15/16/24bit 6/8bit DAC. Has hardware cursor.
- Bt485 15/16/24bit 6/8bit DAC. Has hardware cursor.
-
- Chrontel
- CH8391
- CH8398 15/16/24bit and Clock chip
-
- Cirrus Logic
- CL-GD5200 15/16/24 bit Same as Acumos ADAC1
-
- Diamond:
- SS2410 15/24 bit. OEM version of MUSIC MU9c1880
-
- IBM:
- RGB514 24bit. 144pin. HW cursor, 64bit pixel bus. Clock generator.
- packed 24bit pixels
- RGB524 24bit. 144pin. HW cursor, 64bit pixel bus. Dual clock generator
- packed 24bit pixels
- RGB525 24bit. 208pin. HW cursor, 64bit pixel bus. Clock generator
- packed 24bit pixels
- RGB526 24bit. 144pin. HW cursor, 64bit pixel bus. Dual clock generator
- packed 24bit pixels
- RGB528 24bit. 208pin. HW cursor, 128bit pixel bus. Dual clock generator
- supports 24bit packed pixels
- RGB530 24bit. 208pin. HW cursor. 96bit pixel bus. Clock generator,
- 10bit DACs and LUTs, window attribute table
- RGB561 24bit. 304pin. HW cursor. 200bit pixel bus. Clock generator.
- 10bit DACs and LUTs
- RGB624 24bit. 144pin. HW cursor, 64bit pixel bus, Dual clock generator
- packed 24bit pixels, YUV to RGB conversion
-
-
- ICS:
- ICS5300 24bit Combined RAMDAC & Clock chip
- ICS5301
- ICS5342 24bit Combined RAMDAC & Clock chip
-
- IC Works:
- W30c498 Similar to AT&T 20c498
- W30c516 44pin "ZoomDAC"
-
- Inmos:
- IMSG171
- IMSG173
- IMSG174
- IMSG176 6bit DAC
- IMSG178
-
- MUSIC:
- MU9C1710 6 bit DAC
- MU9C4870 15/16 bit Similar to Sierra "Mark 3".
- MU9C1880 15/16/24bit Same as SS24
- MU9C4910 15/16/24bit
- MU9C9910 15/16/24bit As 4910, but with dual clock generator onchip
- MU9C9750 6bit DAC with onchip clock generator w/powerdown
- MU9C9760 6bit DAC with onchip clock generator
- MU9C4160 15/16/24bit 16bit wide pixelbus
- MU9C9160 15/16/24bit As 4160, but with onchip clock generator
-
- OAK:
- OTI66 6bit DAC
- OTI66HC 15/16bit Similar to Sierra "Mark 3"
-
- S3:
- 86c716 (SDAC) Combined RAMDAC & Clockchip. Same as ICS 5300
- 86c708 (GenDAC) Combined RAMDAC & Clockchip. Same as ICS 5342
-
- Samsung:
- KDA476 6bit DAC Standard '476
-
-
- SGS-Thompson:
- STG1700 24bit 16bit pixel path.
- STG1702 24bit 44pin As 1700 + Supports "2 24bit pixels/3 VCLKs"
- STG1703 24bit 68pin As 1702 + onchip Clock Generator
-
- Sierra Semiconductors:
- Sierra "Mark1": Only works if the VGA controller can send a byte on
- both the rising AND falling edge of the dot clock.
- SC11481 15-bit. 6-bit DAC. Overlay.
- SC11486 15-bit. 6-bit DAC.
- SC11488 15 bit. 6/8 bit DAC. Overlay.
-
- Sierra "Mark2":
- SC11482 15-bit. 6-bit DAC. Overlay.
- SC11483 15-bit. 6-bit DAC.
- SC11484 15-bit. 6/8 bit DAC. Overlay.
-
- Sierra "Mark3":
- SC11485 15/16 bit. 6-bit DAC. Overlay.
- SC11487 15/16 bit. 6-bit DAC.
- SC11489 15/16 bit. 6/8 bit DAC. Overlay.
-
- SC15020 24bit 16bit pixel path
- SC15021 24bit 16bit pixel path
- SC15025 24 bit.
- SC15026 24 bit.
-
-
- TI:
- TLC34058 8bit upto 135MHz. Not VGA compatible
- TLC34075 24bit upto 135MHz
- TVP3010 24bit As 302x, but 32bit pixel path
- TVP3020 24bit 64bit pixel path
- TVP3025 24bit As 3020 + Programmable Clock
-
- Trident:
- TKD8001 24bit
-
- UMC:
- UM70c171 Standard 6bit DAC
- UM70c178 15/16 bit Similar to Sierra "Mark 3"
- UM70c188 24bit
-
- Winbond:
- W82c476 6bit DAC Standard '476
- W82c478 6/8bit DAC Standard '478
- W82c490 15/16/24bit Very close to the AT&T20c492
-
-
- 15-bit modes have 5 bits of each basic color:
- bit 0- 4 blue.
- 5- 9 green.
- 10-14 red.
- The pixel is stored in two bytes in Intel style (little endian).
-
- 16-bit modes have 5 bits of red and blue, and 6 bits of green:
- bits 0- 4 blue.
- 5-10 green.
- 11-15 red.
- The pixel is stored in two bytes in Intel style (little endian).
-
- 24-bit modes have 8 bits of each basic color:
- bits 0- 7 blue.
- 8-15 green
- 16=23 red.
- The pixel is stored in three bytes in Intel style (little endian).
-
-
-
- The DACs are addressed on port 3C6h-3C9h. Advanced DACs have 1 or 2 extra
- address lines (RS2 and RS3). These may be controlled from high address bits
- (A10-A15) (Compaq or Weitek cards) or from registers (S3, ATI....).
- In the following the DAC registers are named REGxx as follows:
-
- I/O: RS2: RS3:
- REG00 3C8h 0 0
- REG01 3C9h 0 0
- REG02 3C6h 0 0
- REG03 3C7h 0 0
- REG04 3C8h 1 0
- REG05 3C9h 1 0
- REG06 3C6h 1 0
- REG07 3C7h 1 0
- REG08 3C8h 0 1
- REG09 3C9h 0 1
- REG0A 3C6h 0 1
- REG0B 3C7h 0 1
- REG0C 3C8h 1 1
- REG0D 3C9h 1 1
- REG0E 3C6h 1 1
- REG0F 3C7h 1 1
-
-
-
- Many of these DACs can access REG06 using only the 4 standard DAC addresses
- (3C6h-3C9h) by reading 3C6h 4 or 5 times, then REG06 can be accessed at 3C6h.
-
- Type:
-
- "1r/w" Read 3C6h 4 times, then the next read or write of 3C6h will access
- the command register.
-
-
- Forcing HiColor DACs into command mode:
- Note: This works on the Sierra, ATT, Winbond DACs and clones, not on the
- Brooktree or TI DACs, also the MUSIC DACs will require an extra read of 3C6h.
-
- procedure dactocomm; {switches DAC to command register}
- var x:word;
- begin
- x:=inp($3C8); {clear old state}
- x:=inp($3C6);
- x:=inp($3C6);
- x:=inp($3C6); {Read $3C6 4 times.}
- x:=inp($3C6);
- end;
-
- Now reads and writes to $3C6 will access the command register. Depending on
- the DAC type you may have multiple read/writes, one write/multiple reads or
- one read/write of the command register before it switches back to the PEL
- register. Any access to $3C7-$3C9 will switch back to the PEL mask register.
-
-
- Forcing HiColor DACs into normal mode:
-
- procedure dactopel; {switches DAC back to normal mode}
- var x:word;
- begin
- x:=inp($3C8);
- end;
-
-
-
-
- HiColor DACs: (Sierra SC1148x, MUSIC MU9C4870, OAK OTI66HC, UMC UM70C178)
-
- REG04 (R/W): Overlay RAM Write Address (SC11481/2/4/5/8/9 only)
- bit 0-3 Write index for the Overlay registers.
-
- REG05 (R/W): Overlay RAM (SC11481/2/4/5/8/9 only)
- bit 0-5 Data port for the overlay registers. Works like the PEL data register
- (3C9h) except that the overlay registers are accessed and the Overlay
- Address registers are used for indexes.
- Note: on the SC11484/8/9 the Color Look-up Table and the overlay registers are
- 24bits wide (rather than 18bits) if the 8/6 pin is high.
-
- REG06 (R/W): Command Register
- bit 0 (SC11487) (R) Set if bits 5-7 is 1 or 3, clear otherwise
- 3-4 (SC11487) Accesses bits 3-4 of the PEL Mask registers (REG02)
- 5 (not SC11481/6/8)
- If set two pixel clocks are used to latch the two bytes
- needed for each pixel. Low byte is latched first.
- If clear the low byte is latched on the rising edge of the
- pixel clock and the high byte is latched on the falling edge.
- Only some VGA chips (ET4000 and C&T655x0) can handle this.
- 6 (SC11485/7/9, OTI66HC, UM70C178) Set in 16bit (64k) modes (Only valid
- if bit 7 set). On the SC11482/3/4 this bit is read/writable, but
- has no function. On the SC11481/6/8 this bit does not exist.
- 7 Set in HiColor (32k/64k) modes, clear in palette modes.
- Note: This register can also be accessed at 3C6h by reading 3C6h four times,
- then all accesses to 3C6h will go the this register until one of the
- registers 3C7h, 3C8h or 3C9h is accessed.
-
- REG07 (R/W): Overlay RAM Read Address (SC11481/2/4/5/8/9 only)
- bit 0-3 Read index for the Overlay registers.
-
-
-
- Analog Devices ADV7160,ADV7162 True-Color Video RAM-DAC:
- The ADV716x DACs are not really VGA compatible, but with proper initialisation
- palette writing and the PEL register can be simulated.
- REG00 W(R/W): Address Register
- bit 0-10 Controls the index read or written at REG01 or REG02.
- Regardless of the bus width this register is accessed by two 8bit
- reads or writes at this address, low byte first.
-
- REG01
-
-
- REG02 Control Registers
- REG02 index 3 (R): ID Register
- bit 0-7 76h for the ADV7160, 79h for the ADV7162
-
- REG02 index 4 (R/W): Pixel Mask Register
- bit 0-7 The pixel inputs (R, G and B) are anded with this value. Set to FFh
- for normal operation.
-
- REG02 index 5 (R/W): Command Register 1
- bit 0 Calibration Control. If set the LOADIN/LOADOUT synchronization
- circuit is calibrated on every vertical sync (REG03 bit 5 must be 0)
- 1 Test Mode Control. Enable test mode if set
- 2 Should be set to 0
- 3 Hi-Byte Control. If set the high byte of the Address Register
- (REG00) is accessible, if clear it is not (ADV7150 compatible).
- 4-5 PS Function Control. Controls how the PS0/1 inputs are used.
- 0: Palette Select Mode. The PS0/1 inputs selects between 4 devices
- by comparing with REG03 bits 6-7 on a pixel by pixel base,
- 1: (ADV7160) Bypass Mode. PS1 switches between Palette Mode and
- Bypass Mode on a pixel by pixel basis. Bits 6-7 controls the Bypass
- Mode. Bypass mode should not be selected in Command Register 2
- (REG02 index 6) and by this field at the same time, 2: Overlay Mode.
- PS0/1 select one of the three overlay colors (PS0/1 = 0 for pixel
- data), 3: Ignore PS Inputs. The PS0/1 inputs are completely ignored.
- 6-7 Bypass Color Mode Control. Controls the bypass mode switching.
- 0: 15bit bypass, 1: 16bit bypass, 2: 24bit bypass
-
- REG02 index 6 (R/W): Command Register 2
- bit 0-1 Should be set to 0
- 2 /SYNC Recognition on Green. If set the /SYNC input is encoded on the
- IOG output.
- 3 Pedestal Enable Control. Set for a 7.5 IRE blanking pedestal, clear
- for a 0 IRE pedestal.
- 4-7 True-Color/Bypass/Pseudo-Color Mode Control. 0: 8bit Pseudo Color
- on R0-7, 4: 8bit Pseudo Color on G0-7, 8: 8bit Pseudo Color on B0-7,
- 9: 16bit Bypass Mode on G0-7 + R0-7, 10: 15bit Bypass Mode on G0-7
- + R0-6, 11: 16bit True Color Mode on G0-7 + R0-7, 12: 15bit True
- Color Mode on B3-7 + G3-7 + R3-7, 13: 15bit True Color Mode on G0-7
- + R0-6, 14: 24bit True Color Mode, 15: 16bit Bypass Mode
-
- REG02 index 7 (R/W): Command Register 3
- bit 0-1 PROGCKOUT Frequency Control. Determines the PROGCKOUT output clock
- frequency relative to the pixel clock (CLOCK). 0: CLOCK/4,
- 1: CLOCK/8, 2: CLOCK/16, 3: CLOCK/32
- 2-4 /BLANK Pipeline Delay Control. Controls the delay of the /BLANK
- signal (in addition to the overall device pipeline delay Tpd).
- Adds N * LOADOUT to the /BLANK delay.
- 5 Should be set to 0
- 6-7 Pixel Multiplex Control. 0: 1:1 MUXING - LOADOUT = CLOCK, 1: 2:1
- MUXING - LOADOUT = CLOCK/2, 2: 8:1 MUXING - LOADOUT = CLOCK/8
- (Pseudo Color Mode only), 3: 4:1 MUXING - LOADOUT = CLOCK/4,
-
- REG02 index 8 (R/W): Command Register 4
- bit 0 HDTV Sync Control. If set the /TRISYNC input is encoded enabling a
- Tri-Level Sync output.
- 1 /SYNC Recognition Control on Red. If set the /SYNC input is encoded
- on the IOR output.
- 2 /SYNC Recognition Control on Blue. If set the /SYNC input is encoded
- on the IOB output.
- 3-4 Gain Control. Selects the Video Standard used.
- Value: DAC Gain: Video Standard Black to White current:
- 0 3996 RS343A, Sync & Pedestal 660mV 17.62mA
- 1 4224 RS343A, Sync, No Pedestal 699mV 18.63mA
- 2 4311 RS343A, No Sync, No Pedestal 714mV 19.05mA
- 3 5592 RS170, Sync & Pedestal 925mV 24.67mA
- 5 Signature Clock Control. Enables the Signature Analyser if set
- 6 Signature Reset. To reset the Signature Analyser write 0, then 1
- to this field.
- 7 Signature Acquire. Enables Signature Acquisition if set
-
- REG02 index 9 (R/W): PLL Command Register
- bit 0 PLL Control. Enables the PLL if set
- 1 RSEL Bit Control. When set the PLL Reference Divider is in units of
- 2, if clear in units of 1. See REG02 index 0Ch for details.
- 2 VSEL Bit Control. When set the PLL Feedback Divider is in units of
- 2, if clear in units of 1. See REG02 index 0Fh for details.
- 3 Should be set to 0
- 4-5 Output Divide Control. Selects the Post divider for the VCO
- 0: VCO/1, 1: VCO/2, 2: VCO/4, 3: VCO/8
- 6-7 PLL S Control. The lower two bits of the PLL Feedback value.
- See REG02 index 0Fh for details.
-
- REG02 index 0Ah (R): Status Register
- bit 0 Set if either of the IOR,IOG or IOB outputs exceeds the internal
- voltage of the /SENSE comparator circuit
-
- REG02 index 0Bh (R): Revision Register
- bit 0-? Silicon Revision Code.
-
- REG02 index 0Ch (R/W): PLL R Register
- bit 0-6 Controls the PLL Reference Divider value together with the RSEL bit
- (index 9 bit 1). If this field is set to 0 the PLL stops.
- The effective value is: (1+RSEL)*(This_Field+2).
- This allows all values from 3-129 and all even values from 130-258.
-
- REG02 index 0Dh (R/W): Command Register 5
- bit 0-5 Should be set to 0
- 6 Set to enable the internal PLL, clear to disable it
- 7 Should be set to 0
-
- REG02 index 0Fh (R/W): PLL V Register
- bit 0-6 Controls the PLL Feedback Divider value together with the VSEL bit
- (index 9 bit 2). If this field is set to 0 the PLL stops.
- The effective value is: (1+VSEL)*(4*(This_Field+2)+ S)
- where S is the value from REG02 index 0Ch bits 6-7.
- This allows all values from 12-519 and all even values from 520-1038
-
- REG02 index 10h (R): Signature Red Register
- REG02 index 11h (R): Signature Blue Register
- REG02 index 12h (R): Signature Green Register
- REG02 index 13h (R): Signature Misc Register
-
- REG02 index 200h W(R/W): Cursor X Register
- bit 0-15 The X coordinate of the cursor as a 2's complement (-4096 to 4095).
- Note: Low byte in index 200h, High byte in index 201h
- Note: When accessing the cursor X/Y registers (index 200h to 203h) the index
- register autoincrements with each access. These registers must be
- updated in the order 200h,201h,202h and then 203h
-
- REG02 index 202h W(R/W): Cursor Y Register
- bit 0-15 The Y coordinate of the cursor as a 2's complement (-4096 to 4095).
- Note: Low byte in index 202h, High byte in index 203h
- Note: When accessing the cursor X/Y registers (index 200h to 203h) the index
- register autoincrements with each access. These registers must be
- updated in the order 200h,201h,202h and then 203h
-
- REG02 index 204h (R/W): Cursor Control Register
- bit 0-1 Cursor Mode Control. 1: X11 cursor, 2: XGA cursor
- Pattern: X11 cursor: XGA cursor:
- 0 Transparent Color 1
- 1 Transparent Color 2
- 2 Color 1 Transparent
- 3 Color 2 Bit-Wise Complement (XOR cursor)
- 2 Cursor Enable. Enables the cursor if set
- 3 Interlace Control. Set for interlaced modes.
- 4-7 Should be set to 0
-
- REG02 index 303h (R/W): Color 2
-
-
- REG02 index 304h (R/W): Color 1
-
- REG02 index 400h-7FFh (R/W): Cursor Image
- bit 0-7 The 64x64 cursor image is stored in these 1024 bytes with 4 2bit
- "pixels" per index. Index 400h holds the 4 leftmost pixels of the
- first (topmost) line, index 40Fh the 4 rightmost and index 7FFh the
- 4 rightmost pixels of the last line.
-
- REG02 index 0-2, 0Eh, 14h and 15h are labeled as "Test Registers"
-
- REG03 (R/W): Mode Register
- bit 0 Reset Control. To reset the pixel port sampling sequence to start
- with port A, write 1, then 0 and finally 1 to this bit.
- 1 RAM-DAC Resolution Control. If set the LUT and DACs are 10bits, if
- clear LUT and DACs are 8bits (lower 2 inputs to the 10bit DACs are
- forced to 0).
- 2 MPU Data Bus Width. If set the MPU interface is 10 bits wide
- 3-4 Operational Mode Control. 0 for normal operation
- 5 Calibrate LOADIN. To calibrate the LOADIN/LOADOUT synchronization
- circuit write 0, then 1 to this bit. Should be 0 for normal
- operation.
- 6-7 Palette Select Match Bits Control. If Command Register 1 (REG02
- index 5) bits 4-5 is 0 the PS0-1 bits are compared with these two
- bits on a pixel per pixel base allowing realtime switching between
- up to 4 devices
-
-
-
-
- ATI 68860/68880 Truecolor DACs:
- REG08 (R/W):
- bit 0-? Always 2 ??
-
- REG0A (R/W):
- bit 0-? Always 1Dh ??
-
- REG0B (R/W): (GMR ?)
- bit 0-7 Mode. 82h: 4bpp, 83h: 8bpp, A0h: 15bpp, A1h: 16bpp, C0h: 24bpp,
- E3h: 32bpp (80h for VGA modes ?)
-
- REG0C (R/W): Device Setup Register A
- bit 0 Controls 6/8bit DAC. 0: 8bit DAC/LUT, 1: 6bit DAC/LUT
- 2-3 Depends on Video memory (= VRAM width ?) . 1: Less than 1Mb, 2: 1Mb,
- 3: > 1Mb
- 5-6 Always set ?
- 7 If set can remove "snow" in some cases (A860_Delay_L ?) ??
-
-
-
-
- AT&T 20c49x,Winbond W82c490 Truecolor DACs:
-
- REG06 (R/W): Command Register
- bit 0 (W82c490, some ATTs) Power Down Enable. If set the DACs and video
- multiplexers are powered down. The CPU interface is still working.
- 1 (490,491) In mode 0 this bit when set selects 8bit DACs, when clear
- 6bit DACs.
- 2-4 Exists, but appears to have no function ?
- 5-7 Mode: 0-3: Palette, 4: 15bit (32k) the two bytes are latched on
- opposite edges of the dotclock (similar to SC11486), 5: 15bit (32k),
- 6: 16bit (64k), 7: 24bit (16m)
- Note: This register can also be accessed by reading REG02 4 times, then the
- next read or write of REG02 will access this register. Any access of
- REG00, REG01 or REG03 will terminate the access to this register. The
- register can only be read or written once before the DAC is returned to
- normal mode (DAC type 4-1r1w).
-
-
-
-
- AT&T 20c498,21c498,22c498 Truecolor DACs (Also IC Works?):
- REG06 (R/W): Command Register
- bit 0,2 (22c498) Clockmode for Mode 2 (2 8bit pixels/VCLK). 0: Clock < 22.5
- MHz, 1: Clock < 45 MHz, 2: Clock >= 45 MHz
- 1 In palette modes this bit when set selects 8bit DACs, when clear 6bit
- DACs.
- 4-7 Mode: 0: 8bit 1VCLK/pixel, 1: 15bit 1VCLK/pixel, 2: 8bit (2 pixels/
- VCLK), 3: 16bit 1VCLK/pixel, 5: 24/32bit 2VCLKs/pixel, 6: 16bit
- 2VCLKs/pixel
- Note: This register can also be accessed at REG02 by reading REG02 four times,
- The fifth read will access of 3C6h will access this register. Only one
- read or write will be allowed (DAC type 4-1r1w2i), the 6th read returns
- 84h and the 7th returns 98h (don't know about the 20c498).
-
-
-
-
- Avance Logic ALG1201 Truecolor DAC:
- REG06 (R/W): "Hidden Command register"
- bit 5-7 Mode. 5: 15bit, 6: 16bit, 7: 24bit
- Note: This register can also be accessed by reading REG02 4 times, then the
- next read or write of REG02 will access this register. Any access of
- REG00, REG01 or REG03 will terminate the access to this register. The
- register can only be read or written once before the DAC is returned to
- normal mode (DAC type 4-1r1w).
-
-
-
-
- BrookTree Bt477:
- REG06 (R/W):
- bit 0 DAC powerdown. If set the DAC powers down
- 1 DAC Width. If set the DAC and palette registers are 8bit wide, if
- clear only 6bit wide (as std VGA).
- 5 IRE control ?? seems to affect the output intensity ?
-
-
-
-
- BrookTree Bt481/482:
-
- REG00 index 0 (R/W): Ind Pixel Mask
-
- REG00 index 1 (R/W): Overlay Mask
-
- REG00 index 2 (R/W): Command Register B
- bit 0 Set to power down the DAC (Sleep mode).
- 1 DAC Width. If set the DAC and palette registers are 8bit wide, if
- clear only 6bit wide (as std VGA).
- 2 Sync on Red if set
- 3 Sync on Green if set
- 4 Sync on Blue if set
- 5 Set for 7.5 IRE, clear for 0.0 IRE pedestal (affects DAC range).
- 6 Enables the Overlay registers if set
-
- REG00 index 3 (R/W): Cursor Register (482)
- bit 0-1 Cursor type. 0: disabled, 1: 3-color, 2: Windows, 3: X11 style
- 2 Cursor Op disabled if set?
- 3 If clear reads/writes to REG04,REG05,REG07 will access the cursor
- palette, if set the cursor pattern data will be accessed instead.
- 4 Set in interlaced modes
- 5 Selects External cursor if set
-
- REG00 index 4 W(R/W): Cursor X (482)
- bit 0-11 Cursor X position
-
- REG00 index 6 W(R/W): Cursor Y (482)
- bit 0-11 Cursor Y position
- Note: the indexed DAC registers are accessed by setting bit 0 of REG06. Then
- REG00 is the index register and REG02 is the data register.
-
- REG04 (R/W): Cursor Write Address (482)
- bit 0-1? Selects the palette register which will be written at REG05
- 0: Overscan, 1: Cursor Background, 2: Cursor Foreground
-
- REG05 (R/W): Cursor RAM Data (482)
- bit 0-7 Cursor palette data
- Note: If REG00 index 3 bit 3 is clear this works like the palette address&data
- registers at REG00,REG01®03 except that a separate palette is
- accessed. Each read/write of this register will increment first through
- the red,green,blue sequence and then the Address register (REG04/REG07).
- If REG00 index 3 bit 3 is set REG04/REG07 are the lower 8 bits of the
- index into the 1024 byte palette pattern RAM, which will increment for
- each access to this register.
-
- REG06 (R/W): Command Register A
- bit 0 If set the Bt481/2 indexed DAC registers can be accessed by setting
- REG00 to the index and reading or writing the data at REG02.
- 4-7 Mode. 0: Palette, 8: 15bit (Dual edge), 9: 24bit (Dual edge),
- Ah: 15bit (32K), Ch: 16bit (Dual edge), Eh: 16bit (64K),
- Fh: 24bit (16m). The Dual edge modes transfers data on both the
- rising and falling edges of the pixel clock.
- Note: This register can also be accessed at REG02 by reading REG02 four
- times. Then the command register can be read or written at REG02.
- This access will be terminated by any access to REG00, REG01 or REG03
- or after a write to the command register (DAC type 4-Nr1w).
-
- REG07 (R/W): Cursor Read Address (482)
- bit 0-1? Selects the palette register which will be read at REG05
-
-
-
-
- BrookTree Bt484, Bt485, AT&T 20c504/5 Truecolor DACs:
- The 485 and 505 has the extra register at REG0A and supports 64x64 cursor
- The 484 & 504 appears to be limited to 110MHz, the 485/505 to 135MHz
-
- REG04 (R/W): Cursor/Overscan Write Address
- bit 0-7 The PEL data register (0..255) to be written to REG05.
- Note: After writing the 3 bytes at REG05 this register will increment, pointing
- to the next data register.
-
- REG05 (R/W): Cursor/Overscan Data
- bit 0-5 Color value
- Note: Each read or write of this register will cycle through first the
- registers for Red, Blue and Green, then increment the appropriate
- address register.
- Note: the registers REG04,REG05,REG07 works like the normal REG00,REG01,REG03
- registers, except that a separate set of palette registers (16 overlay
- registers ?) are being accessed.
- Index 00h Overscan color
- 01h Cursor Color 1 (Background)
- 02h Cursor Color 2 (Foreground)
- 03h Cursor Color 3
- Note: if the DAC is in 6bit mode (REG06 bit 1 is 0) the 2 upper bits of the
- cursor colors are ignored.
-
- REG06 (R/W): Command Reg 0
- bit 0 Power Down. If set the DACs and RAM power is turned off, but the RAM
- still retains data, if clear the RAMDAC is operating normally
- 1 Set if DAC and palette registers are 8bit DACs, clear if 6bit.
- 2 Sync on Red if set
- 3 Sync on Green if set
- 4 Sync on Blue if set
- 5 Set for 7.5 IRE pedestal, clear for 0.0 IRE.
- 6 Disables internal clocking if set
- 7 (485,505) Enable CR3. If clear the Status register is present at
- REG0A, if set 3C8h determines which register is present at REG0A:
- 00h Status Register
- 01h Command Register 3
-
- REG07 (R/W): Cursor/Overscan Read Address
- bit 0-7 The PEL data register (0..255) to be read from REG05.
- Note: After reading the 3 bytes at REG05 this register will increment,
- pointing to the next data register.
-
- REG08 (R/W): Command Reg 1
- bit 0 In 15/16bit 1:1 mode selects the pixel port (A-B or C-D) to take
- pixel data from. Clear for A-B, set for C-D. See bit 1.
- 1 PORTSEL. In 15bit 1:1 mode (bit 2 set & bit 3 clear), this bit if
- set causes pin P7D (most significant bit of the C-D port) to select
- whether the 15bit pixel data is taken from port A-B or port C-D,
- thus allowing real-time switching between video sources.
- 2 SPARSE. Set if 16bit data is 1:1, clear if it is muxed 2:1
- 3 Set in 5/6/5 mode, clear in all other modes
- 4 If set decodes True-color pixel data (5/5/5, 5/6/5 or 8/8/8 mode),
- directly, if clear each component (R-G-B) of the pixel data is used
- is used as a separate index to the palette RAM for the specific RGB
- component, allowing non-linear scales (gamma correction) for each
- color-component. REG09 bit 2 controls the indexing.
- 5-6 Bits per pixel. 0: 24, 1: 15/16, 2: 8, 3: 4
-
- REG09 (R/W): Command Reg 2
- bit 0-1 Cursor mode. 0: Disabled, 1: 3-Color, 2: Windows, 3: X11 Style
- 2 Sparse or Contigous Indexing. In Look-up True-color modes (REG08 bit
- 4 clear) selects whether each color component is shifted right or
- left before being used as an index to the palette. If set the pixel
- data is treated as the least significant bits of the index
- (Contigous index), if clear as the most significanty bits (Sparse
- index).
- 3 Set in interlaced modes (used for the cursor).
- 4 Selects input clock. 0: PCLK0, 1: PCLK1
- 5 If clear the dac takes data from the VGA port and each byte is a one
- byte palette index regardless of the state in Command Register 1, if
- set pixel data is taken from pixel ports A-D and data format is
- controlled by Command Register 1
- 6 Test Path enabled if set.
- 7 SCLK (Video shift clock) disabled if set.
-
- REG0A (R): Status Reg
- bit 4-7 Product ID ?
- 4: AT&T20c504, 0Dh: AT&T20c505, 8-Bh: Bt484/5
- Note: The two registers at REG0A are selected by bit 7 of REG06.
-
- REG0A (R/W): Command Reg 3 (485,505 only)
- Bit 0-1 Bits 8-9 of the Palette Write Address (3C8h)
- 2 Set if using 64x64 cursor, clear if 32x32 cursor.
- 3 If set the Clock Doubler is enabled and the input clock is doubled.
- Note: The two registers at REG0A are selected by bit 7 of REG06.
- This register does not exist on the Bt484
-
- REG0B (R/W): Cursor Ram Data
- bit 0-7 Data port for the Hardware Cursor Map.
- There are either 2 128byte (32x32bit) or 2 512 byte (64x64bit) maps
- depending on REG0A bit 2. The first is the cursor image and the
- second is the cursor shape.
- To update the cursor map, write the start address to REG00and start
- writing to this register. The index will increment for each byte.
-
- REG0C W(R/W): Hardware Cursor X-position
- bit 0-11 The X-position of the rightmost pixel of the hardware cursor
-
- REG0E W(R/W): Hardware Cursor Y-position
- bit 0-11 The Y-position of the lower scanline of the hardware cursor
-
-
-
-
- Chrontel CH8391 and CH8398:
- REG04 (R/W): Clock RAM Write Address
- bit 0-? Selects the register that is writable at REG05. The first write
- accesses the low byte of the register and the second the high byte.
- Note: Reading this register 4 times will cause the next access of this
- register to go to the "Hidden Clock" register.
-
- REG04 (R/W): Clock Select Register
- bit 0-3 Selects the Video Clock.
- 4-6 Selects the Memory Clock
- 7 Frequency hold. If set the video and memory clock selects in bits
- 0-6 are ORed with the actual inputs from the clock select pins
- Note: This register is accessed6 by reading REG04 4 timers first.
-
- REG05 (R/W): Clock RAM Data Register
- Note: each indexed register addressed here is 16bit wide and thus must be
- read/written as two bytes, low byte first.
-
- REG05 index 00h-0Fh W(R/W): Video Clock Select 0-15
- bit 0-7 N. Numerator. Effective value (n) is N+8. The following N values
- may give unstable output: 0-7, 10-15, 19-23, 28-31, 37-39, 46-47
- and 55.
- 8-13 M. Denominator. Effective value (m) is M+2. It is recommended to
- use N<11 for best clock performance
- 14-15 K. Clock Divider. Effective divider (k) is: 0: 1, 1: 2, 2: 4, 3: 8
- The resulting clock is: ref*n/(m*k) where ref is the reference clock, usually
- 14.31818MHz and n,m and k are the effective (as opposed to coded) factors
- Note: The CH8398 apparently has Video Clock 0 hardcoded as 25.175MHz and
- Video Clock 1 hardcoded as 28.322. The CH8391 does not.
-
- REG05 index 10h-17h W(R/W): Memory Clock Select 0-7
- Probably same coding as the Video Clocks.
-
- REG06 (R/W): Control Register (CH8391)
- bit 0 Power Down if set
- 1 If set the DAC and palette registers are 8bit wide (256 colors of
- 16Mcolors), if clear 6bit (256 colors of 256K colors)
- 5-7 Color mode. 0: Palette, 5: 15bit, 6: 16bit, 7: 24bit
- Note: This register can also be accessed by reading 3C6h 4 times in a row.
- The 4th read will return the chip ID (B3h for the CH8391) and the 5th
- read or write will access this register ("1r/w" type Cmd register).
-
- REG06 (R/W): Control Register (CH8398)
- bit 0 Power Down if set
- 2 Always set ??
- 4-7 Color mode. 0: Palette, 1: 15bit, 3: 16bit, 5: 24bit, 6: 16bit,
- 7: 24bit, 11: 24bit, 12: 15bit
- Note: This register can also be accessed by reading 3C6h 4 times in a row.
- The 4th read will return the chip ID (C0h for the CH8398) and the 5th
- read or write will access this register ("1r/w" type Cmd register).
-
- REG07 (R/W): Clock RAM Read Address
- bit 0-? Selects the register that is readable at REG05. The first read
- accesses the low byte of the register and the second the high byte.
-
-
-
-
- Cirrus Logic 542x/3x internal DAC.
- - How close is this to the Cirrus Logic CL-GD5200 & Acumos ADAC1 ?
- REG02 (R/W): Hidden DAC Register
- bit 0-3 Extended Mode Select. If bit 6 and 7 are both set this field
- selects the DAC mode:
- 0: 5-5-5 15bit Sierra HiColor
- 1: 5-6-5 16bit "XGA" HiColor
- 5: (5422+) 8-8-8 24bit TrueColor. This mode also exists on the
- 5420 rev1, but is not documented.
- 6/7: (5428+) DAC Power-down
- 8: (5428+) 8bit Greyscale.
- 9: (5428+) 3-3-2 8bit RGB
- 4 32K Color Control. If set bit 15 (MSB) of a 15bit pixel selects
- whether the pixel is HiColor(bit 15 = 0) or palette data(bit 15 = 1,
- bit 0-7 is the palette index). This bit only has effect in 5-5-5
- 15bit modes.
- 5 Clocking Mode. If set Clocking Mode 2 will be selected and data will
- only be latched on the rising edge of DCLK, if clear Clocking Mode 1
- will be selected and data will be latched on both the rising edge
- (low byte) and falling edge (high byte) of DCLK. This bit only has
- effect in 15/16 bit modes as all other modes will use Clocking Mode
- 2. Clocking Mode 1 should only be used for externally supplied DCLK
- and pixel data.
- 6 Enable ALL Extended Modes. If bit 7 is set and this bit is clear the
- DAC is in 5-5-5 15bit Sierra HiColor mode, if both bit 7 and this
- bit are set bits 0-3 determines the DAC mode.
- 7 Enable 5-5-5 Mode. If set the DAC is in an advanced mode, depending
- on the other bits in this register, if clear the DAC is in VGA
- compatible palette mode.
- Note: This register is accessed by reading REG02 four times to unlock this
- register, then the next read or write of REG02 will access this register.
- After reading or writing this register the register is locked and this
- register can only be accessed be redoing the 4 reads of REG02 etc. Any
- access to REG00,REG01,REG03 will also lock this register. The 5428 is the
- exception where reads of this register will NOT lock it.
- Note: When REG02 is 0FFh the access to this register described above does
- x not always work.
- Note: This register does not exist on the 5401/5402 and the 5420 rev A.
-
-
-
-
- IBM RGB514, RGB524, RGB525, RGB528 Truecolor DAC w/PLL:
- REG04 W(R/W): Index
- bit 0-? Selects the indexed register that will be accessed by the next read
- or write of REG06. If REG07 bit 0 is set this index is
- autoincremented by each access of REG06.
-
- REG06 index 00h (R): Rev
- bit 0-7 Revision. F0h for the RGB524, ? for the RGB514, RGB525,RGB528
-
- REG06 index 01h (R): Id
- bit 0-7 Chip ID. 2 for the RGB524, ? for the RGB514,RGB525,RGB528
-
- REG06 index 02h (R/W): Misc Clock
- bit 0 Set for internal (PLL) clock ??
- 1 Set for double clock
-
- REG06 index 03h (R/W): Sync
- REG06 index 04h (R/W): Hsync Pos
- bit 0-3 Hsync Position ?
-
- REG06 index 05h (R/W): Power Management
- REG06 index 06h (R/W): DAC Options
- bit 1 Fast slew if set ?
- 3 Sync on Green if set
-
- REG06 index 07h (R/W): Palette Control
- REG06 index 08h (R/W): System Clock (Not RGB525?)
- REG06 index 0Ah (R/W): Pixel Format
- bit 0-2 Pixel format. 3: 8bpp, 4: 15/16bpp, 6: 32bpp
-
- REG06 index 0Bh (R/W): 8bpp
- REG06 index 0Ch (R/W): 16bpp
- bit 1 Set for 16bpp (5:6:5), clear for 15bpp (5:5:5)
-
- REG06 index 0Dh (R/W): 24bpp
- REG06 index 0Eh (R/W): 32bpp
- REG06 index 10h (R/W): PLL Control 1
- bit 0 Set to use 8 internal clocks with separate numerators, clear to
- use 16 internal clocks with a common numerator (index 14h).
- 1-2 Set to 1 ??
-
- REG06 index 11h (R/W): PLL Control 2
- bit 0-3 Selects the PLL clock used (0-7 if index 10h bit 0 set, 0-15 if it
- is clear).
-
- REG06 index 14h (R/W): PLL Ref Div Fix
- bit 0-4 N. Numerator. Guess 0 not valid. Used for f0-f15 if index 10h bit 0
- is clear.
-
- REG06 index 15h W(R/W): Sysclk Ref/VCO Div (Not RGB525)
- bit 0-4 N. Numerator. Guess 0 not valid
-
- REG06 index 16h (R/W): Sysclk VCO Div (Not RGB525)
- bit 0-5 M. Multiplier. 65-128, Stored as 0-63.
- 6-7 DF. Divider. 0: /8, 1: /4, 2: /2, 1: /1. (Div=1,2,4,8).
- Note: Memory Clock. The effective clock is: Ref*(M+65)/(N*Div), where Ref is
- the reference clock, typ 14.31828MHz and N the numerator from index 15h
-
- REG06 index 20h-2Fh (R/W): PLL Clock 0-15 (f0-f15)
- bit 0-5 M. Multiplier. 65-128, Stored as 0-63.
- 6-7 DF. Divider. 0: /8, 1: /4, 2: /2, 1: /1. (Div=1,2,4,8).
- Note: Only active if index 10h bit 0 is clear. The effective clock is:
- Ref*(M+65)/(N*Div), where Ref is the reference clock, typ 14.31828MHz
- and N is the Numerator from index 14h.
-
- REG06 index 20h-2Eh W(R/W): PLL Clock 0-7 (m0/n0..)
- bit 0-5 M. Multiplier. 65-128, Stored as 0-63.
- 6-7 DF. Divider. 0: /8, 1: /4, 2: /2, 1: /1. (Div=1,2,4,8).
- 8-12 N. Numerator. Guess 0 not valid
- Note: Only active if index 10h bit 0 is set. The effective clock is:
- Ref*(M+65)/(N*Div), where Ref is the reference clock, typ 14.31828MHz
-
- REG06 index 30h (R/W): "Cursor Control"
- bit 0-1 Cursor type. 0: Disabled, 2: Windows?, 3: X11 cursor
- 2 Set for 64x64 cursor, clear for 32x32 cursor
- 3
- 5 Set for ??
-
- REG06 index 31h W(R/W): "Cursor X position"
- bit 0-? The horizontal position of the hardware cursor
-
- REG06 index 33h W(R/W): "Cursor Y position"
- bit 0-? The vertical position of the hardware cursor
-
- REG06 index 35h (R/W): Cursor Hot-Spot X
-
- REG06 index 36h (R/W): Cursor Hot-Spot Y
-
- REG06 index 40h (R/W): Cursor Color1 Red
- bit 0-7 Red component of the Cursor Color1.
-
- REG06 index 41h (R/W): Cursor Color1 Green
- bit 0-7 Green component of the Cursor Color1.
-
- REG06 index 42h (R/W): Cursor Color1 Blue
- bit 0-7 Blue component of the Cursor Color1.
-
- REG06 index 43h (R/W): Cursor Color2 Red
- bit 0-7 Red component of the Cursor Color2.
-
- REG06 index 44h (R/W): Cursor Color2 Green
- bit 0-7 Green component of the Cursor Color2.
-
- REG06 index 45h (R/W): Cursor Color2 Blue
- bit 0-7 Blue component of the Cursor Color2.
-
- REG06 index 46h (R/W): Cursor Color3 Red
- bit 0-7 Red component of the Cursor Color3.
-
- REG06 index 47h (R/W): Cursor Color3 Green
- bit 0-7 Green component of the Cursor Color3.
-
- REG06 index 48h (R/W): Cursor Color3 Blue
- bit 0-7 Blue component of the Cursor Color3.
-
- REG06 index 60h (R/W): Border Color Red
- bit 0-7 Red component of the Border Color.
-
- REG06 index 61h (R/W): Border Color Green
- bit 0-7 Green component of the Border Color.
-
- REG06 index 62h (R/W): Border Color Blue
- bit 0-7 Blue component of the Border Color.
-
- REG06 index 70h (R/W): Miscellaneous 1
- bit 6
-
- REG06 index 71h (R/W): Miscellaneous 2
- bit 0
- 2 If set DACs & LUTs are 8bit wide, if clear only 6bits wide
-
- REG06 index 72h (R/W): Miscellaneous 3
- REG06 index 73h (R/W): Miscellaneous 4 (Not RGB525)
- REG06 index 82h (R/W): DAC Sense
- REG06 index 84h (R/W): Misc Red
- REG06 index 86h (R/W): Misc Green
- REG06 index 88h (R/W): Misc Blue
- REG06 index 8Eh (R/W): PLL VCO Div In
- REG06 index 8Fh (R/W): PLL Ref Div In
- REG06 index 90h (R/W): VRAM Mask 0
- REG06 index 91h (R/W): VRAM Mask 1
- REG06 index 92h (R/W): VRAM Mask 2
- REG06 index 93h (R/W): VRAM Mask 3
-
- REG06 index 100h-4FFh (R/W): "Cursor Data"
- Note: The cursor map is either a 64x64x2 (1024 bytes) or 32x32x2 (256bytes).
- The map data is stored with upper lines first, left pixels first. Each
- byte holds 4 pixels, with lowest pixel in bits 0-1 and highest on 6-7.
- High bit: Low bit: Resulting Screen data:
- 0 0
- 0 1
- 1 0 Screen data
- 1 1
-
- REG07 (R/W): Index Control
- bit 0 If set the index at REG04 is autoincremented by each access of REG06
-
-
-
-
- ICS 5301:
- REG06 (R/W): "Hidden DAC register"
- bit 0-1 Power down if set ??
- 2-4 Always 0
- 5-7 Mode. 1,4,5: 15bit, 3,6: 16bit, 2,7: 24bit
- Note: This register can be accessed by reading REG02 4 times, then the next
- read or write of REG02 will access this register. Any access of REG00,
- REG01 or REG03 will terminate the access to this register. The register
- can only be read or written once before the DAC is returned to normal
- mode (DAC type 4-1r1w).
-
-
-
-
- IC Works W30c498, W30c516 Truecolor DACs:
- REG06 (R/W): Command Register
- bit 0,2 (?) Clockmode for Mode 2 (2 8bit pixels/VCLK). 0: Clock < 22.5
- MHz, 1: Clock < 45 MHz, 2: Clock >= 45 MHz
- 1 In palette modes this bit when set selects 8bit DACs, when clear 6bit
- DACs.
- 4-7 Mode: 0: 8bit 1VCLK/pixel, 1: 15bit 1VCLK/pixel, 2: 8bit (2 pixels/
- VCLK), 3: 16bit 1VCLK/pixel, 5: 32bit 2VCLKs/pixel, 6: 16bit
- 2VCLKs/pixel, 10: 15bit 2VCLKs/pixel
- Note: This register can also be accessed at REG02 by reading REG02 four times
- The fifth read will access of 3C6h will access this register. Only one
- read or write will be allowed (DAC type 4-1r1w3i), the 6th read returns
- 84h, the 7th returns 98h and the 8th read returns 4Fh (at least for the
- w30c516).
-
-
-
-
- MUSIC MU9c1880 and Diamond SS24 Truecolor DACs:
- REG06 (R/W): Command Register
- bit 0,6 Red Byte Position Shift. In 24bit mode delays the fetching of the
- first pixel of each scanline by 1 or 2 bytes to synchronize with the
- start of the first pixel.
- 0: no delay, 1: delay 1 byte, 2: delay 2 bytes
- 1-3,5 Selects the Hi- or Truecolor mode. 8: 15bit (5-5-5) HiColor,
- 0Bh: 16bit (5-6-5) HiColor, 7: 24bit Truecolor (Red byte first).
- 4 Pixel Mode Switch. In 15bit mode when this bit is set, the most
- significant bit of each 16bit pixel whether that pixel should be
- displayed as HiColor (bit 15=0) or Pseudo Color (bit 15=1).
- If this bit clear all pixels are displayed as HiColor
- This bit should be clear in 16bit mode and set in 24bit mode.
- 7 If clear the DAC is in Pseudo Color mode, all other bits in this
- register are ignored, if set it is in a Hi- or Truecolor mode (15,16
- or 24 bits/pixel).
- Note: This register can also be accessed at REG02 by reading REG02 four times,
- The fifth read will return 8Eh (the ID for the MU9c1880/SS24) and then
- the next read or write of 3C6h will access this register. Only one read
- or write will be allowed (DAC type 5i-1r1w).
-
-
-
-
- MUSIC MU9c4870 High Color(?) DAC
- MUSIC MU9c4910 True Color DAC.
- MUSIC MU9c9910 True Color DAC & Clock Generator.
- REG04 (R/W): PLL Write Index Register (9910 only)
- bit 0-3 Selects the index register which will be accessed by the next write
- to REG05.
-
- REG05 (R/W): PLL Data Register (9910 only)
- The PLL registers accessed at this register are indexed via REG04 (writes) and
- REG07 (reads). All (?) are two byte registers which are accessed via two reads
- or writes (low byte first) each of the indexes have an internal flip-flop to
- track low/high byte. Each read of REG05 will increment the read index (with
- the flip-flop incremented first). Writes increment the write index (REG04)
- similarly.
-
- REG05 index 00h - 07h W(R/W): f0-f7 PLL Parameters
- bit 0-6 M. Numerator.
- 8-11 N1. Quotient. Prescales REF for the PLL.
- 12-13 N2. Clock divider. Divides the output clock by: 0: /1, 1: /2,
- 2: /4, 3: /8
- Resultant clock is: REF*(M+1)/((N1+1)*(2^N2)), where REF is the reference
- clock, typically 14.31818MHz.
-
- REG06 (R/W): Command Register
- bit 0 Powers down the DAC if set
- 5-7 Mode. 5: 15bit, 6: 16bit, 7: 24bit
- Note: This register can be accessed by reading REG02 3 times, then the fourth
- read will return the device ID and then the next read or write of REG02
- will access this register. Any access of REG00, REG01 or REG03 or writes
- to REG02 will terminate the access to this register, however reading of
- REG02 will not (DAC type 4i-1wNr).
- The MU9c9910 has ID 44h, the MU9c4910 has ID 82h, the MU9c4870 ??
-
- REG07 (R/W): PLL Read Index Register (9910 only)
- bit 0-3 Selects the index register which will be accessed by the next read
- to REG05.
-
-
-
-
- MUSIC MU9c9750 Low Power SYNDAC:
- REG04 (R/W): PLL Write Address Register
- bit 0-3 Selects the index register which will be accessed by the next write
- to REG05.
-
- REG05 (R/W): PLL Parameters
- The PLL registers accessed at this register are indexed via REG04 (writes) and
- REG07 (reads). As all but index 0Eh are two byte registers which are accessed
- via two reads or writes (low byte first) each of the indexes have an internal
- flip-flop to track low/high byte. Each read of REG05 will increment the read
- index (with the flip-flop incremented first). Writes increment the write
- index (REG04) similarly.
-
- REG05 index 00h - 07h W(R/W): CLK0 f0-f7 PLL Parameters
- bit 0-6 M. Numerator.
- 8-11 N1. Quotient. Prescales REF for the PLL.
- 12-13 N2. Clock divider. Divides the output clock by: 0: /1, 1: /2,
- 2: /4, 3: /8
- 14-15 PLL Mode Select. 0: Normal PLL mode - the output frequency is
- calculated as: f=REF*(M+1)/((N1+1)*(2^N2)), 1: High-resolution
- Low-frequency mode - same as PLL mode, but the output clock is
- divided by 1024, 2: OFF - The output is set HIGH, 3: Low-resolution
- Low-frequency mode - Output clock is: f=REF/((M+1)*(2^N2))
- REF is the reference clock, typically 14.31818MHz. For best results the
- following constraints should be observed: REF should be in the 5MHz - 32Mhz
- range. REF/(N1+1) should be in the 2MHz - 16MHz range (for REF=14.31818MHz
- N1 should be in the range 1-6) and REF*(M+1)/(N1+1) should be in the 40MHz
- to 80MHz range.
-
- REG05 index 08h W(R/W): CLK0 fL0 PLL Parameters
- Defines the CLK0 output when in LCD mode. Same format as index 0-7
-
- REG05 index 09h W(R/W): CLK0 fD0 PLL Parameters
- Defines the CLK0 output when in Dormant mode. Same format as index 0-7
-
- REG05 index 0Ah W(R/W): CLK1 fA PLL Parameters
- Defines the CLK1 output when in CRT mode and bit 4 of the PLL Control Register
- (index 0Eh) is clear. Same format as index 0-7
-
- REG05 index 0Bh W(R/W): CLK1 fB PLL Parameters
- Defines the CLK1 output when in CRT mode and bit 4 of the PLL Control Register
- (index 0Eh) is set. Same format as index 0-7
-
- REG05 index 0Ch W(R/W): CLK1 fL1 PLL Parameters
- Defines the CLK1 output when in LCD mode. Same format as index 0-7
-
- REG05 index 0Dh W(R/W): CLK1 fD1 PLL Parameters
- Defines the CLK1 output when in Dormant mode. Same format as index 0-7
-
- REG05 index 0Eh (R/W): PLL Control Register
- bit 0-2 CLK0 Select. Selects the CLK0 output in CRT mode (f0 - f7).
- 4 CLK1 Select. Selects the CLK1 output in CRT mode. 0: fA, 1: fB
- 5 CLK0 External Select Enable. If clear the CLK0 definition (f0-f7)
- is selected by the CS0-CS2 inputs, if set it is selected by bits
- 0-2 of this register
- 6 CLK0 Master Powerdown. If set the CLK0 PLL is powered down and the
- output is set HIGH.
- 7 CLK1 Master Powerdown. If set the CLK1 PLL is powered down and the
- output is set HIGH.
-
- REG06 (R/W): Command Register
- bit 0 LCD mode enable. If set the DAC goes into LCD mode where video flow
- through the DACs is stopped and the palette RAM is only accessed
- to service uP read/writes. The clocks CLK0,CLK1 are forced to the
- state defined in fL0/fL1 regardless of the state of the PLL Control
- register. The internal state of registers and palette RAM is
- maintained. See note
- 6 Dormant Mode enable. If set the DAC goes into Dormant mode where
- the video flow though the DACs and the uP interface is stopped.
- The clocks CLK0,CLK1 are forced to the state defined in fD0/fD1
- regardless of the state of the PLL Control register. The internal
- state of registers and palette RAM is maintained. See note
- Note: The CRT, LCD and Dormant modes are selected by a combination of the
- bits in this register and the PD0,PD1 input pins (x is don't care):
- PD1: PD0: Bit 6: Bit 0: Mode: DAC: RAM Access: CLK0: CLK1:
- 1 0 0 0 CRT On Video&uP f0-f7 fA,fB
- x 1 0 0 LCD Off uP fL0 fL1
- 1 0 0 1 LCD Off uP fL0 fL1
- 0 0 x x Dormant Off None fD0 fD1
- x x 1 x Dormant Off None fD0 fD1
- Setting PD1=1 and PD0=0 allows full control from this register
-
- REG07 (R/W): PLL Read Address Register
- bit 0-3 Selects the index register which will be accessed by the next read
- to REG05.
-
-
-
-
- Oak OTI-66HC HiColor DAC:
- REG06 (R/W): "Hidden" Command Register
- bit 0 If set the DAC powers down
- 5-7 DAC mode. 5: 15bit, 6: 16bit
- Note: This register can be accessed by reading REG02 4 times, then the next
- read or write of REG02 will access this register. Any access of REG00,
- REG01 or REG03 or writes to REG02 will terminate the access to this
- register, however reading of REG02 will not (DAC type 4-1wNr).
-
-
-
-
- S3 86c708 (GenDac aka ICS5342) and 86c716 (SDAC aka ICS5300).
-
- REG02 (R): "Hidden DAC" register (86c716)
- Bit 4-7 7 for the 86c716.
- Note: This is a special register overlaying the PEL register activated by an
- internal counter. Each access to 3C7h-3C9h resets the counter and each
- access to 3C6h increments it. When the counter reaches 4 this register
- is returned. The fifth read returns another register
-
- REG04 (R/W): PLL Write Register
- bit 0-7 Controls the indexed register written at REG05. Each indexed
- register holds two bytes at the same index. Autoincremented after
- every two writes of REG05.
-
- REG05 index 00h W(R/W): f0 PLL M & N1/M2 divider
- bit 0-6 M. Quotient. Stored as 1-127, actual value 3-129
- 8-12 N1. Frequency divider. Stored as 1-31, actual value 3-33
- 13-15 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8
- Note: Defines the frequency generate when clock 0 is selected
- Note: See index 02h for details
- Possibly hardwired to 25.175MHz
-
- REG05 index 01h W(R/W): f1 PLL M & N1/M2 divider
- bit 0-6 M. Quotient. Stored as 1-127, actual value 3-129
- 8-12 N1. Frequency divider. Stored as 1-31, actual value 3-33
- 13-15 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8
- Note: Defines the frequency generate when clock 1 is selected
- Note: See index 02h for details
- Possibly hardwired to 28.322MHz
-
- REG05 index 02h W(R/W): f2 PLL M & N1/M2 divider
- bit 0-6 M. Quotient. Stored as 1-127, actual value 3-129
- 8-12 N1. Frequency divider. Stored as 1-31, actual value 3-33
- 13-15 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8
- Note: Defines the frequency generate when clock 2 is selected
- Note: Frequency is (M/N1)/(1 << N2) *base frequency.M and N1 are the actual
- values, not the stored ones. Typically the base frequency is 14.318 MHz.
-
- REG05 index 03h W(R/W): f3 PLL M & N1/M2 divider
- bit 0-6 M. Quotient. Stored as 1-127, actual value 3-129
- 8-12 N1. Frequency divider. Stored as 1-31, actual value 3-33
- 13-15 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8
- Note: Defines the frequency generate when clock 3 is selected
- Note: See index 02h for details
-
- REG05 index 0Ah W(R/W): Memory Clock
- bit 0-6 M. Quotient. Stored as 1-127, actual value 3-129
- 8-12 N1. Frequency divider. Stored as 1-31, actual value 3-33
- 13-15 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8
- Note: Defines the frequency generate for the memory clock
- Note: See index 02h for details
-
- REG05 index 0Eh W(R/W): PLL Control
-
-
- REG06 (R/W): Enhanced Command Register
- bit 4-7 Mode: 0: Palette (1 pixel/VCLK), 1: Palette (2 pixels/VCLK), 2: 15bit
- (2 VCLKs/pixel), 3: 15bit (1 VCLK/pixel), 4: 24bit (3 VCLKs/pixel)
- - GenDAC only?, 5: 16bit (1 VCLK/pixel), 6: 16bit (2 VCLKs/pixel),
- 7: 32bit (2 VCLKs/pixel), 0Eh: 24bit (3 VCLKs/pixel)
-
- REG07 (R/W): PLL Read Register
- bit 0-7 Controls the indexed register read from REG05. Each indexed
- register holds two bytes at the same index. Autoincremented after
- every two reads of REG05.
-
-
-
-
-
- SGS-Thompson STG1700/2/3 Truecolor DACs:
- All the STG DACs have 16bit pixel data path, but the 1700 can not use the
- packed 24bit mode where 2 pixels are transferred in 3 pixel clocks.
- The 1703 has built-in clock generator.
-
- REG04 (R/W): Index Low
- bit 0-7 Index for the register accessible via REG05. The high byte (always
- 0) is in REG07.
-
- REG05 (R/W): Indexed Register
- There are a series of indexed registers in the STG DACs. If REG06 bit 4 is set
- they are accessed by the two index bytes to REG02 and then reading or writing
- the indexed registers at REG02 (index will autoincrement). If REG06 bit 4 is
- clear the index is written to REG04 & REG07 and the indexed register are read
- or written at REG05.
-
- REG05 index 00h (R): Company ID
- bit 0-7 44h for SGS-Thompson, 97h for ??
-
- REG05 index 01h (R): Device ID
- bit 0-7 00h for STG1700, 02h for STG1702, 03h for STG1703
-
- REG05 index 02h (R/W?):
- bit 0-7 A1h ??
-
- REG05 index 03h (R/W?): Primary Pixel Mode
- bit 0-7 Mode (this register only active if REG06 bit 3 set):
- 2: 15bit 1VCLK per pixel
- 3: 16bit 1VCLK per pixel
- 4: 24bit 2VCLKs per pixel (2x 16bit -> 1x 24bit)
- 5: 8bit 1/2 VCLKs per pixel (ie. 16bit -> 2x 8bit)
- 9: (not 1700) 24bit 3/2 VCLKs per pixel (3x 16bit -> 2x 24bit)
-
- REG05 index 04h (R/W?): Secondary Pixel Mode
- bit 0-7 same as index 3 ??
-
- REG05 index 05h (R/W?): PLL Control
- bit 0-7 02h - for double clocking (16bit) ???
-
- REG05 index 06h (R/W?):
- bit 0-7 00h ??
-
- REG05 index 07h (R/W?):
- bit 0-7 88h ??
-
- REG05 index 20h W(R/W):
- bit 0-7 B. Quotient
- 8-12 N1. Frequency divider.
- 13-15 Divider (D). 0: /1, 1: /2, 2: /4, 3: /8
- The effective clock is: Ref*D*(B+2)/(N1+2). Ref is the reference clock,
- typically 14.31818MHz
-
- REG06 (R/W): Pixel Command Register
- bit 0 Power down the DAC if set
- 1 Set to get 8bit DACs in 256color mode, clear to get normal 6bit DACs
- 2 Controls intensity ??
- 3 If set the DAC is controlled by the indexed registers below.
- 4 When set puts the dac into indexed mode, now write the index (2
- bytes) to this register, then each access to this register will read
- or write the particular indexed register and increment the index.
- This is the same index as in REG04/REG07.
- 5-7 Selects the Hi/True color mode: 0: Standard (16/256color),
- 5: 15bit(32K), 6: 16bit(64K), 7: 24bit(16m)
- Note: This register can be accessed by reading REG02 4 times, then the next
- read or write of REG02 will access this register. Any access of REG00,
- REG01 or REG03 will terminate the access to this register, The register
- can only be read or written once per unlock sequence (DAC type 4-1w1r).
-
- REG07 (R/W): Index High
- bit 0-? High byte of the index in REG04. 0 for all current registers.
-
-
-
- Sierra SC15021,25/6 Truecolor DACs:
- The SC15021 supports 16bit pixel data path.
-
- REG04 (R/W): Overlay Write Address
-
- REG05 (R/W): Overlay Data
-
- REG06 (R/W): Command Register
- bit 1-2 EXT mode select ?
- 3 Gamma Correction enabled if set?
- 4 If set 3C7h is the index port and 3C8h the data port for an extra
- register, also this register is then accessible directly at 3C6h.
- 0,5-7 Mode:
- 00h Palette modes
- 04h 32bit RGBx (red first) "double clocked" - pixel data on both
- rising and falling edge of the dotclock
- 05h 32bit BGRx (blue first) "double clocked"
- 06h 24bit RGB/32bit RGBx (red first)
- 07h 24bit BGR/32bit BGRx (blue first)
- 08h 15bit (32K colors) "double clocked"
- 09h 15bit (32K colors) "EXT" "double clocked"
- 0Ah 15bit (32K colors)
- 0Bh 15bit (32K colors) "EXT"
- 0Ch 16bit (64K colors) "double clocked"
- 0Eh 16bit (64K colors)
- Note: This register can be accessed by reading REG02 4 times, then the next
- read or write of REG02 will access this register. Any access of REG00,
- REG01 or REG03 or writes to REG02 will terminate the access to this
- register, however reading of REG02 will not (DAC type 4-1wNr).
-
- REG06 index 8 (R/W): Auxiliary Control
- bit 0 DAC and palette register width in palette modes.
- Set for 8bit and clear for 6 bit
- 1 PED 75 IRE.
- 2 Power Down.
-
- REG06 index 9 (R): ID1
- bit 0-7 53h ('S')
-
- REG06 index 0Ah (R): ID2
- bit 0-7 Version code. 0/36h/3Ah
-
- REG06 index 0Bh (R): ID3
- bit 0-7 B1h for the SC15025/26, ACh for the SC15021
-
- REG06 index 0Ch (R): ID4
- bit 0-7 41h
-
- REG06 index 0Dh (R/W): Pixel Mask Low
- bit 0-7 ANDed with the pixel data, Low byte. Should normally be FFh.
-
- REG06 index 0Eh (R/W): Pixel Mask Middle
- bit 0-7 ANDed with the pixel data, Middle byte. Should normally be FFh.
-
- REG06 index 0Fh (R/W): Pixel Mask High
- bit 0-7 ANDed with the pixel data, High byte. Should normally be FFh.
-
- REG06 index 10h (R/W): Pixel Repack
- bit 0 (15025/6) Set for 4x 8bit -> 1x 24bit, clear for 1x 8bit -> 8bit,
- 2x 8bit -> 1x 16bit or 3x 8biot -> 1x 24bit
- 0-3 (15021) Packaging: 2: 8bit -> 2x4bit, 4: 16bit -> 2x8bit,
- 5: 3x16bit -> 2x24bit (2/3 clock), 6: 2x16bit -> 24bit (1/2
- clock), 8: 16bit -> 16bit (alternate?), 0: all others
-
- REG06 index 11h (R/W): Cursor (15021)
- bit 0-2 Cursor Delay. 0: None, 4: +1, 5: +2, 6: -1, 7: -2
- 3-4 Cursor type. 0: disabled, 1: 3 colors, 2: 2 color MS-Windows style,
- 3: 2 color X11 style
- 7 Cursor Polarity
-
- REG06 index 12h (R/W): Secondary Control (15021)
- bit 0-1 Mix control: 1: 8 -> 16 MixA or 8 -> 15 MixB, 2: 8 -> 16 MixB or
- 8 -> 15 MixA, 0 for all others.
-
- REG07 (R/W): Overlay Read Address
-
-
-
-
-
- Trident TKD8001 24bit DAC (also 9200CXr,9400CXi,9420DGi internal DAC):
-
- REG06 (R/W): Command Register
- 0 (not 9200) Power down DAC if set ?
- 1 (not 9400) In mode 0 this bit when set selects 8bit DACs, when clear
- 6bit DACs. Should be set in 24bit mode, clear in 15/16 bit modes ?
- 5-7 Mode: 0: Palette (16/256), 5: 15bit (32k), 7: 16bit (64k),
- 6: 24bit (16m colors) bit 2 should be set in this mode
- Note: This register can also be accessed at REG02 by reading REG02 four
- times. Then the command register can be read or written at REG02.
- This access will be terminated by any access to REG00, REG01 or REG03
- or after a write to the command register (DAC type 4-Nr1w).
-
-
-
-
- Trident 9440AGi internal 24bit DAC:
-
- REG06 (R/W): Command Register
- 2 If set in the 15/16/24 bit modes pixels with the most significant
- bit set appears to be displayed as if in palette mode ?
- 4-7 Mode: 1: 15bit (32k), 3: 16bit (64k), 0Dh: 24bit (16m colors)
- All other values appears to default to palette mode
- Note: This register can also be accessed at REG02 by reading REG02 four
- times. Then the command register can be read or written at REG02.
- This access will be terminated by any access to REG00, REG01 or REG03
- or after a write to the command register (DAC type 4-Nr1w).
-
-
-
-
- TI TLC34058, Brooktree Bt458 DACs
- These DACs are intended for high bandwidth systems and are not VGA compatible.
- They use 4 or 5 separate pixel ports in parallel for higher bandwidth
-
- REG04 (R/W) Index Register.
- bit 0-7 Index for accesses through 3C6h, 3C7h and 3C9h. For 3C7h and 3C9h
- there is also an internal counter for the (Red, Green and Blue)
- cycle. This counter is reset when this register is written.
- Each access to 3C7h or 3C9h will increment first the RGB counter and
- then this register.
-
- REG05 (R/W) Palette Data
- bit 0-7 Palette data port. 3C8h selects the entry in the palette RAM. Each
- read or write of this register increments index, first through the
- Red, Green & Blue and then increments register 3C8h
-
- REG06 (R/W) Control Data.
- bit 0-7 Data port for the Control registers. 3C8h is the index. Unlike 3C7h
- and 3C9h the index in 3C8h is not increased by reads and writes of
- this register
-
- REG06 index 4 (R/W): Read Mask Register
- bit 0-7 The pixel data is ANDed with this byte before being passed to the
- palette RAM. This is similar to 3C6h in standard VGA systems.
-
- REG06 index 5 (R/W): Blink Mask Register
- bit 0-7 In the blink off period the pixel data is ANDed with the inverse of
- this register, Ie. the '0' bits in this register will protect the
- corresponding bits of the pixel data from blinking, while '1' bits
- will force the corresponding pixel data bits low during the blink
- off period.
-
- REG06 index 6 (R/W): Command Register
- bit 0 OL0 Display Enable. If clear the overlay pin 0 (OL0) is forced to 0
- 1 OL1 Display Enable. If clear the overlay pin 1 (OL1) is forced to 0
- 2 OL0 Blink Enable. If set (and bit 0 set) the overlay pin 0 toggles
- between 0 and the actual value at the blink rate
- 3 OL1 Blink Enable. If set (and bit 1 set) the overlay pin 1 toggles
- between 0 and the actual value at the blink rate
- 4-5 Blink Rate Select. Selects the blink rate in vertical periods:
- 0: 16on/48off, 1: 16on/16off, 2: 32on/32off, 3: 64on/64off
- 6 RAM Enable. If the overlay select pins (OL0-1) are 0 this bit
- selects the output. Set for palette RAM data, clear for overlay
- register 0.
- 7 Multiplex Select. Set for 5:1 multiplexing, clear for 4:1
- multiplexing - pixel port E is ignored and should be tied low
-
- REG06 index 7 (R/W): Test Register
- bit 0-3 Selects the data to be returned in bit 4-7 when reading this
- register. Selects upper or lower 4 bits of one of the 3 DAC inputs:
- 1: return 4MSB of Red 9: return 4LSB of Red
- 2: return 4MSB of Green 10: return 4LSB of Green
- 4: return 4MSB of Blue 12: return 4LSB of Blue
- 4-7 (R) Data selected by bits 0-3
-
- REG07 (R/W) Overlay Data
- bit 0-7 Overlay data port. 3C8h selects the entry in the overlay RAM (0-3).
- Each read or write of this register increments index, first through
- the Red, Green & Blue and then increments register 3C8h
-
-
-
-
- TI TLC34075, ATI68875 True color DACs
- This DAC has an 8bit VGA port and a 32bit pixelport (P). The 32bit pixelport
- P can be multiplexed for greater bandwidth. 6 or 8 bit DACs can be controlled
- via the 8/6 pin (low=6bit, high=8bit).
-
- REG08 (R/W): General Control Register
- bit 0 If set HSYNCOUT is active high, active low if clear
- 1 If set VSYNCOUT is active high, active low if clear
- 2 Enables split shift register transfer (VRAM) if set
- 3 Enables special nibble mode if set
- 4 Pedestal Enable Control. Set for a 7.5 IRE pedestal, clear for a 0
- IRE pedestal
- 5 Sync Enable Control. If set enables sync on green.
- 7 MUXOUT. If set the MUXOUT output pin is high, low if clear
- Note: bits 2 and 3 can not both be set.
-
- REG09 (R/W): Input Clock Selection Register
- bit 0-3 Selects the clock source (DOTCLK):
- 0: CLK0, 1: CLK1, 2: CLK2, 3: CLK3 (TTL), 4: /CLK3 (TTL)
- 8: CLK3 and /CLK3 are selected as an ECL clock source
-
- REG0A (R/W): Output Clock Selection Register
- bit 0-2 Selects SCLK from DOTCLK.
- 0: SCLK=DOTCLK, 1: SCLK=DOTCLK/2, 2: SCLK=DOTCLK/4
- 3: SCLK=DOTCLK/8, 4: SCLK=DOTCLK/16, 5: SCLK=DOTCLK/32
- 6,7: SCLK held at logic low
- 3-5 Selects VCLK from DOTCLK.
- 0: VCLK=DOTCLK, 1: VCLK=DOTCLK/2, 2: VCLK=DOTCLK/4
- 3: VCLK=DOTCLK/8, 4: VCLK=DOTCLK/16, 5: VCLK=DOTCLK/32
- 6,7: VCLK held at logic high
-
- REG0B (R/W): MUX Control Register
- bit 0-5 Selects bits/pixel, pixel port and multiplexing:
- 0Dh 24bpp from P. Red=P8-15, Green=P16-23, Blue=P24-31
- 10h 1bpp. 4 pixels/DOTCLK from P0-3
- 11h 1bpp. 8 pixels/DOTCLK from P0-7
- 12h 1bpp. 16 pixels/DOTCLK from P0-15
- 13h 1bpp. 32 pixels/DOTCLK from P0-31
- 14h 2bpp. 2 pixels/DOTCLK from P0-3
- 15h 2bpp. 4 pixels/DOTCLK from P0-7
- 16h 2bpp. 8 pixels/DOTCLK from P0-15
- 17h 2bpp. 16 pixels/DOTCLK from P0-31
- 18h 4bpp. 1 pixel/DOTCLK from P0-3
- 19h 4bpp. 2 pixels/DOTCLK from P0-7
- 1Ah 4bpp. 4 pixels/DOTCLK from P0-15
- 1Bh 4bpp. 8 pixels/DOTCLK from P0-31
- 1Ch 8bpp. 1 pixels/DOTCLK from P0-7
- 1Dh 8bpp. 2 pixels/DOTCLK from P0-15
- 1Eh 8bpp. 4 pixels/DOTCLK from P0-31
- 1Fh 4bpp. 4 pixels/DOTCLK from P0-31 (Special Nibble mode)
- If the NFLAG input is low the 4 pixels are from P0-3, P8-11,
- P16-19, P24-27 if high from P4-7, P12-15, P20-23, P28-31
- 2Dh 8bpp from VGA port
-
- REG0C (R/W): Palette Page Register
- bit 0-7 For 1,2 and 4 bits/pixel modes the upper bits of this register are
- used to select 1 of 128, 64 and 16 pages respectively in the
- palette RAM. The pixel data selects the entry within the page.
-
- REG0E (R/W): Test Register
- bit 0-2 (W) Test mode. Selects the current test mode. Reading this register
- will step to the next test (see Next below).
- Val: Next: Description:
- 0 1 Read Color Palette Red value
- 1 2 Read Color Palette Green value
- 2 0 Read Color Palette Blue value
- 3 0 Read Identification code.
- Returns 75h for 34075
- 4 5 Read Ones Accumulation Red value
- 5 6 Read Ones Accumulation Green value
- 6 4 Read Ones Accumulation Blue value
- 7 7 Analog Test. Result specified below.
- 3 (R) Analog Test result. Set if the voltage selected by bit 6 (Green)
- or bit 7 (Red) is larger than the one selected by bit 4 (145mV
- reference) or bit 5 (Blue), clear if not.
- 4 Select 145mV reference if set. Only applies to Analog test (bit 0-2
- = 7)
- 5 Select Blue DAC if set. Only applies to Analog test (bit 0-2 = 7)
- 6 Select Green DAC if set. Only applies to Analog test (bit 0-2 = 7)
- 7 Select Red DAC if set. Only applies to Analog test (bit 0-2 = 7)
-
- REG0F (W): Reset State
- Note: Writing to this register will cause a hardware reset of the DAC.
-
-
-
-
- TI Viewpoint TVP3010,TVP3020,TVP3025,TVP3026 DACs
- Note: The TVP3010, TVP3020 and TVP3025 use 3 address lines to select 8 direct
- registers (REG00-REG07) while the TVP3026 uses 4 lines to select 16
- direct registers (REG00-REG0F). The indexed registers (called REG06
- index XXh) are also handled differently
-
- REG06 (R/W): Index Register
- bit 0-7 Index port to the indexed registers. First set this register, then
- read or write REG07
- Note: On the TVP3026 the index is written to REG00 and data is read or written
- to/from REG0A
-
- REG06 index 00h W(R/W): Cursor X Position
- bit 0-11 Horizontal position of the cursor
-
- REG06 index 02h W(R/W): Cursor Y Position
- bit 0-11 Vertical position of the cursor
-
- REG06 index 04h (R/W): Sprite Origin X
-
- REG06 index 05h (R/W): Sprite Origin Y
-
- REG06 index 06h (R/W): Cursor Control
- bit 4 X Window Mode if set
- 6 Sprite Enable if set
- 7 (3025) Planar Access. Set for Bt485 mode, clear for 3020 mode
-
- REG06 index 08h W(R/W): Cursor RAM Address
- bit 0-15 Index into the cursor RAM on the DAC. Data is read or written at
- index 0Ah. Each access to index 0Ah will autoincrement this register
-
- REG06 index 0Ah (R/W): Cursor RAM Data
- bit 0-7 Cursor data. Reading or writing this register will access the
- location in Cursor RAM specified in index 8 and will increment that
- index to allow consecutive reads or writes.
- The cursor is stored as a 64x64x2 bitmap with 4 2bit pixels per byte
- The two bits are interpreted as:
- High (odd) Low (even) ix 6 bit 4=1 ix 6 bit 4=0
- bit bit X11 mode "normal"
- 0 0 Transparent Color 0
- 0 1 Transparent Color 1
- 1 0 Color 0 Transparent
- 1 1 Color 1 Inverse screen (XOR)
- Color 0 is the color in index 23h-25h, Color 1 is the color in index
- 26h-28h
-
- REG06 index 0Eh (R/W): True Color Control (3025)
- bit 0 8bit mode?. 0: 16/32bit, 1: 4/8bit
- 1 Non-VGA mode. Set for non-VGA mode, clear for VGA mode
- 2 BTmode. Set for Bt485 mode, clear for TI3020 mode
-
- REG06 index 0Fh (R/W): VGA Switch Control (3025)
-
- REG06 index 10h W(R/W): Window Start X
-
- REG06 index 12h W(R/A): Window Stop X
-
- REG06 index 14h W(R/W): Window Start Y
-
- REG06 index 16h W(R/W): Window Stop Y
-
- REG06 index 18h (R/W): MUX Control 1
- bit 0-2 (3020) Direct Color mode.
- 3: Selects 6-6-4 16bit mode (6red-6green-4blue).
- 4: Selects 5-5-5 15bit mode (5red-5green-5blue).
- 5: Selects 5-6-5 16bit mode (5red-6green-5blue).
- 6: Selects 8-8-8 24bit mode (8red-8green-8blue).
- 0-3 (3025) Direct Color mode
- 0Ch: Selects 5-5-5 mode (5red-5green-5blue).
- 0Dh: Selects 5-6-5 mode (5red-6green-5blue).
- 0Eh: Selects 8-8-8 mode (8red-8green-8blue).
- 6 (3025) D/T mode. 0: Selects "D" mode, 1: selects "T" mode.
- 7 Pseudo Color, set for palette modes
-
- REG06 index 19h (R/W): MUX Control 2
-
-
- REG06 index 1Ah (R/W): Input Clock Select
- bit 0 (3020) If set selects ICLK1, if clear ICLK0
- 0-2 (3025) Selects the input clock.
- 0: ICLK0, 1: ICLK2, 2: ICLK2, 3: ICLK2_I ?, 4: ICLK2_E ?
- 5: PLL as input clock.
- 4 If set doubles the selected input clock.
-
- REG06 index 1Bh (R/W): Output Clock Select
- bit 0-1 Multiplex. 0: (R1), 1: 1:2 Mux (1x64 -> 2x 24/32bit) R2, 2: 1:4 Mux
- (1x64 -> 4x 15/16bit) R4, 3: 1:8 Mux (1x64 -> 8x 8bit) R8
- 3-4 Clock range. 0: <=60MHz (V1), 1: >60MHz & <=120MHz (V2), 2: >120MHz
- (V4), 3: V8
- 6 S ?
- 7 (3025) NS ?
- Note: Set to 3Eh in VGA passthrough mode
-
- REG06 index 1Ch (R/W): Palette Page
-
- REG06 index 1Dh (R/W): General Control
- bit 0 Vertical Sync Polarity. 0: Negative, 1: Positive
- 1 Horizontal Sync Polarity. 0: Negative, 1: Positive
- 5 Sync on Green if set
-
- REG06 index 1Eh (R/W): Misc Control (3025)
- bit 0 Powerdown
- 1 Dotclock disable
- 2 Internal 6/8 Control. If set selection of 6 or 8 bits DAC mode in
- palette modes is done by bit 3, if clear from the 6/8 input pin.
- 3 8Bpp. If set selects 8bit DAC and palette registers in palette
- modes, if clear selects 6bit DAC & registers.
- This bit only active if bit 2 is set.
- 5 VCLK Polarity.
- 6 LCLK Latch. 0: VCLK
- 7 Loop PLL RCLK.
-
- REG06 index 20h (R/W): Overscan Color Red
-
- REG06 index 21h (R/W): Overscan Color Green
-
- REG06 index 22h (R/W): Overscan Color Blue
-
- REG06 index 23h (R/W): Cursor Color 0 Red
- bit 0-7 The red component of the cursor background color.
-
- REG06 index 24h (R/W): Cursor Color 0 Green
- bit 0-7 The green component of the cursor background color.
-
- REG06 index 25h (R/W): Cursor Color 0 Blue
- bit 0-7 The blue component of the cursor background color.
-
- REG06 index 26h (R/W): Cursor Color 1 Red
- bit 0-7 The red component of the cursor foreground color.
-
- REG06 index 27h (R/W): Cursor Color 1 Green
- bit 0-7 The green component of the cursor foreground color.
-
- REG06 index 28h (R/W): Cursor Color 1 Blue
- bit 0-7 The blue component of the cursor foreground color.
-
- REG06 index 29h (R/W): Auxillary Control
- bit 0 Window Complement if set
- 3 (3020) Self Clock mode if set
-
- REG06 index 2Ah (R/W): General IO Control
- bit 0-4
-
- REG06 index 2Bh (R/W): General IO Data
-
- REG06 index 2Ch (R/W): PLL Control (3025)
- bit 0-1 Write 0 to reset the internal counter for the PLL data registers
- Each write to index 2Dh/2Eh/2Fh will increment this field.
-
- REG06 index 2Dh (R/W): Pixel Clock PLL Data (3025)
- bit 0-? N. Divider (3-28). Stored as 1-26. Could probably be larger ??
- 8-14 M. Divident (3-129). Stored as 1-127
- 16-17 P. Clock multiplier. 0: *8, 1: *3, 2: *2, 3: *1
- 19 PLL Enable. Enables the PLL clock if set
- Note: This register consists of 3 bytes at the same index. Writing 00h to
- index 2Ch resets the internal counter so that the next access to this
- index accesses the first byte. Each access autoincrements the internal
- counter. The clock is calculated as: Ref * P * (M+2)/(N+2)
-
- REG06 index 2Eh (R/W): MCLK PLL Data (3025)
- bit 0-? N. Divider (3-28). Stored as 1-26. Could probably be larger ??
- 8-14 M. Divident (3-129). Stored as 1-127
- 16-17 P. Clock multiplier. 0: *8, 1: *3, 2: *2, 3: *1
- 19 PLL Enable. Enables the PLL clock if set
- 23 Set when writing new PLL data ?
-
- REG06 index 2Fh (R/W): Loop Clock PLL Data (3025)
- bit 0-? N. Divider (3-28). Stored as 1-26. Could probably be larger ??
- 8-14 M. Divident (3-129). Stored as 1-127
- 16-17 P. Clock multiplier. 0: *8, 1: *3, 2: *2, 3: *1
- 19 PLL Enable. Enables the PLL clock if set
-
- REG06 index 30h W(R/W): Color Key OLVGA
-
- REG06 index 32h W(R/W): Color Key Red
-
- REG06 index 34h W(R/W): Color Key Green
-
- REG06 index 36h W(R/W): Color Key Blue
-
- REG06 index 38h (R/W): Color Key Control
-
- REG06 index 39h (R/W): MCLK/DCLK Control (3025)
-
- REG06 index 3Ah (R/W): Sense Test
-
- REG06 index 3Bh (R/W): Test Data
-
- REG06 index 3Ch W(R/W): CRC
-
- REG06 index 3Eh (R/W): CRC Control
-
- REG06 index 3Fh (R): ID
- bit 0-7 Chip ID. 20h for TVP3020, 25h for TVP3025, 26h for TVP3026
- Guess: 10h for TVP3010
-
- REG06 index D5h (R/W): Mode 85 Control (3025)
-
- REG0A (R/W): Data Register (3025)
-
-
- UMC UM70c178 Hi-Color DACs:
-
- REG06 (R/W): Command Register
- bit 0-4 (R) Always 0
- 5-7 Mode: 5: 15bit, 7: 16bit.
- Note: This register can also be accessed at REG02 by reading REG02 four
- times. Then the command register can be read or written at REG02.
- This access will be terminated by any access to REG00, REG01 or REG03
- or after write of the command register. (DAC type 4-Nr1w).
-
-
-
-
- UMC UM70c188 TrueColor DACs:
-
- REG06 (R/W): Command Register
- bit 0-3 (R) Always 0
- 4 Set in 24bit mode, clear in all other modes
- 5-7 Mode: 5: 15bit, 7: 16bit. Don't care for 24bit
- Note: This register can also be accessed at REG02 by reading REG02 four
- times. Then the command register can be read or written at REG02.
- This access will be terminated by any access to REG00, REG01 or REG03
- or after a read or write of the command register. (DAC type 4-1r1w).
-
-
-
-
-
- Forcing HiColor DACs into command mode:
- Note: This works on the Sierra, ATT, Winbond DACs and clones, not on the
- Brooktree or TI DACs, also the MUSIC DACs will require an extra read of 3C6h.
-
- procedure dactocomm; {switches DAC to command register}
- var x:word;
- begin
- x:=inp($3C8); {clear old state}
- x:=inp($3C6);
- x:=inp($3C6);
- x:=inp($3C6); {Read $3C6 4 times.}
- x:=inp($3C6);
- end;
-
- Now reads and writes to $3C6 will access the command register. Depending on
- the DAC type you may have multiple read/writes, one write/multiple reads or
- one read/write of the command register before it switches back to the PEL
- register. Any access to $3C7-$3C9 will switch back to the PEL mask register.
-
-
- Forcing HiColor DACs into normal mode:
-
- procedure dactopel; {switches DAC back to normal mode}
- var x:word;
- begin
- x:=inp($3C8);
- end;
-
-
-
- function testdac:string;
- var
- x,y,z,v,oldcommreg,oldpelreg:word;
-
- type
- pel=record
- index,red,green,blue:byte;
- end;
-
- procedure readpelreg(index:word;var p:pel);
- begin
- p.index:=index;
- disable;
- outp($3C7,index);
- p.red :=inp($3C9);
- p.blue :=inp($3C9);
- p.green:=inp($3C9);
- enable;
- end;
-
- procedure writepelreg(var p:pel);
- begin
- disable;
- outp($3C8,p.index);
- outp($3C9,p.red);
- outp($3C9,p.blue);
- outp($3C9,p.green);
- enable;
- end;
-
- function setcomm(cmd:word):word;
- begin
- dac2comm;
- outp($3c6,cmd);
- dac2comm;
- setcomm:=inp($3c6);
- end;
-
- procedure waitforretrace;
- begin
- repeat until (inp(CRTC+6) and 8)=0;
- repeat until (inp(CRTC+6) and 8)>0; {Wait until we're in retrace}
- end;
-
- function dacis8bit:boolean;
- var
- pel2,x,v:word;
- pel1:pel;
- begin
- pel2:=inp($3C8);
- readpelreg(255,pel1);
- v:=pel1.red;
- pel1.red:=255;
- writepelreg(pel1);
- readpelreg(255,pel1);
- x:=pel1.red;
- pel1.red:=v;
- writepelreg(pel1);
- outp($3C8,pel2);
- dacis8bit:=(x=255);
- end;
-
- function testdacbit(bit:word):boolean;
- begin
- dac2pel;
- outp($3C6,oldpel and (bit xor $FF));
- dac2comm;
- disable;
- outp($3C6,oldcomm or bit);
- v:=inp($3C6);
- outp($3C6,v and (bit xor $FF));
- enable;
- testdacbit:=(v and bit)<>0;
- end;
-
- begin
-
- setDAC(_dac8,'Normal');
- dac2comm;
- oldcomm:=inp($3C6);
- dactopel;
- oldpel:=inp($3c6);
-
- dac2comm;
- outp($3c6,0);
- dac8:=dacis8bit;
- dac2pel;
-
- notcomm:=oldcomm xor 255;
- outp($3c6,notcomm);
- dac2comm;
- v:=inp($3c6);
- if v<>notcomm then
- if (setcomm($E0) and $e0)<>$e0 then
- begin {Bits 5-7 of command register NOT writable.}
- dac2pel;
- x:=inp($3C6);
- repeat
- y:=x; {wait for the same value twice}
- x:=inp($3C6);
- until (x=y);
- z:=x;
- dac2comm;
- if daccomm<>$8E then
- begin {If command register=$8e, we've got an SS24}
- y:=8;
- repeat
- x:=inp($3C6);
- dec(y);
- until (x=$8E) or (y=0);
- end
- else x:=daccomm;
- if x=$8e then setDAC(_dacss24,'SS24')
- else setDAC(_dac15,'Sierra SC11486');
- dac2pel;
- end
- else begin
- if (setcomm($60) and $E0)=0 then
- begin
- if (setcomm(2) and 2)>0 then setDAC(_dacatt,'ATT 20c490')
- else setDAC(_dacatt,'ATT 20c490');
- end
- else begin
- x:=setcomm(oldcomm);
- if inp($3c6)=notcomm then
- begin
- if setcomm($FF)<>$ff then setDAC(_dacadac1,'Acumos ADAC1')
- else begin
- dac8now:=dacis8bit;
- dac2comm;
- outp($3C6,(oldcomm or 2) and $FE);
- dac8now:=dacis8bit;
- if dac8now then
- if dacis8bit then setDAC(_dacatt,'ATT 20c491')
- else setDAC(_dacCL24,'Cirrus 24bit DAC')
- else setDAC(_dacatt,'ATT 20c492');
- end;
- end
- else begin
- if trigdac=notcomm then setDAC(_dacCL24,'Cirrus 24bit DAC')
- else begin
- dac2pel;
- outp($3c6,$FF);
- case trigdac of
- $44:setDAC(_dacmus,'MUSIC ??');
- $82:setDAC(_dacmus,'MUSIC MU9C4910');
- $8e:setDAC(_dacss24,'Diamond SS2410');
- else
- if testdacbit($10) then setDAC(_dacsc24,'Sierra 16m')
- else if testdacbit(4) then setDAC(_dacUnk9,'Unknown DAC #9')
- else setDAC(_dac16,'Sierra 32k/64k');
- end;
- end;
- end;
- end;
- end;
-
- dac2comm;
- outp($3c6,oldcomm);
- end;
- dac2pel;
- outp($3c6,oldpel);
-
- if (dactype=_dac8) and (DAC_RS2<>0) and (DAC_RS3<>0) then
- begin
- oldpel :=inp($3C6);
- oldcomm:=inp($3C6+DAC_RS2);
- outp($3C6+DAC_RS2,oldpel xor $FF);
- if (inp($3C6)=oldpel) and (inp($3C6+DAC_RS2)=(oldpel xor $FF)) then
- SetDAC(_dacBt484,'Brooktree Bt484');
-
- outp($3C6+DAC_RS2,oldcomm);
- outp($3C6,oldpel);
- end;
-
-
-
- if dactype=_dac8 then
- begin
- WaitforRetrace;
- outp($3C8,222);
- outp($3C9,$43);
- outp($3C9,$45);
- outp($3C9,$47); {Write 'CEGEDSUN' + mode to DAC index 222}
- outp($3C8,222);
- outp($3C9,$45);
- outp($3C9,$44);
- outp($3C9,$53);
- outp($3C8,222);
- outp($3C9,$55);
- outp($3C9,$4E);
- outp($3C9,13); {Should be in CEG mode now}
- outp($3C6,255);
- x:=(inp($3c6) shr 4) and 7;
- if x<7 then
- begin
- setDAC(_dacCEG,'Edsun CEG rev. '+chr(x+48));
- WaitforRetrace;
- outp($3C8,223);
- outp($3C9,0); {Back in normal dac mode}
- end;
- end;
- end;
-
-
- This ID's all known DAC types, except:
- - Sierra "mark2" and "Mark3" are all ID'd as Mark 3.
-
- - Avance Logic ALG1101 DAC can not be ID'd.
-
- - TI 34075, ATI 68830, 68860 and 68875 can not be ID'd
-
- - The Edsun CEG test has not been verified.
-